Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/NavigationConfig.kt e23fab266758cd1fcacaf55e5cf25aea4c5cf00e (e23fab26) Text, 7.61 KB

T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.navigation

Tff7b72import T7ee787androidx.navigation3.runtime.NavKey
Tff7b72import T7ee787androidx.savedstate.serialization.SavedStateConfiguration
Tff7b72import T7ee787kotlinx.serialization.modules.SerializersModule
Tff7b72import T7ee787kotlinx.serialization.modules.polymorphic

T8b949e/**
* Shared polymorphic serialization configuration for Navigation 3 saved-state support. Registers all route types used
* across Android and Desktop navigation graphs.
*/
Tff7b72val Te6edf3MeshtasticNavSavedStateConfig Tff7b72= Te6edf3SavedStateConfiguration Tb4b4b4{
Te6edf3serializersModule Tff7b72= Te6edf3SerializersModule Tb4b4b4{
Te6edf3polymorphicTb4b4b4(Te6edf3NavKeyTff7b72::Te6edf3classTb4b4b4) Tb4b4b4{
T8b949e// Nodes
Te6edf3subclassTb4b4b4(Te6edf3NodesRoutesTb4b4b4.Te6edf3NodesGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3NodesRoutesTb4b4b4.Te6edf3NodesGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodesRoutesTb4b4b4.Te6edf3NodesTff7b72::Te6edf3classTb4b4b4, Te6edf3NodesRoutesTb4b4b4.Te6edf3NodesTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodesRoutesTb4b4b4.Te6edf3NodeDetailGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3NodesRoutesTb4b4b4.Te6edf3NodeDetailGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodesRoutesTb4b4b4.Te6edf3NodeDetailTff7b72::Te6edf3classTb4b4b4, Te6edf3NodesRoutesTb4b4b4.Te6edf3NodeDetailTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Node detail sub-screens
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3DeviceMetricsTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3DeviceMetricsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3NodeMapTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3NodeMapTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3PositionLogTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3PositionLogTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3EnvironmentMetricsTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3SignalMetricsTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3SignalMetricsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3PowerMetricsTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3PowerMetricsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3TracerouteLogTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3TracerouteLogTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3TracerouteMapTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3TracerouteMapTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3HostMetricsLogTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3HostMetricsLogTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3PaxMetricsTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3PaxMetricsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3NeighborInfoLogTff7b72::Te6edf3classTb4b4b4, Te6edf3NodeDetailRoutesTb4b4b4.Te6edf3NeighborInfoLogTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Conversations
Te6edf3subclassTb4b4b4(Te6edf3ContactsRoutesTb4b4b4.Te6edf3ContactsGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3ContactsRoutesTb4b4b4.Te6edf3ContactsGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3ContactsRoutesTb4b4b4.Te6edf3ContactsTff7b72::Te6edf3classTb4b4b4, Te6edf3ContactsRoutesTb4b4b4.Te6edf3ContactsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3ContactsRoutesTb4b4b4.Te6edf3MessagesTff7b72::Te6edf3classTb4b4b4, Te6edf3ContactsRoutesTb4b4b4.Te6edf3MessagesTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3ContactsRoutesTb4b4b4.Te6edf3ShareTff7b72::Te6edf3classTb4b4b4, Te6edf3ContactsRoutesTb4b4b4.Te6edf3ShareTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3ContactsRoutesTb4b4b4.Te6edf3QuickChatTff7b72::Te6edf3classTb4b4b4, Te6edf3ContactsRoutesTb4b4b4.Te6edf3QuickChatTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Map
Te6edf3subclassTb4b4b4(Te6edf3MapRoutesTb4b4b4.Te6edf3MapTff7b72::Te6edf3classTb4b4b4, Te6edf3MapRoutesTb4b4b4.Te6edf3MapTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Firmware
Te6edf3subclassTb4b4b4(Te6edf3FirmwareRoutesTb4b4b4.Te6edf3FirmwareGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3FirmwareRoutesTb4b4b4.Te6edf3FirmwareGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3FirmwareRoutesTb4b4b4.Te6edf3FirmwareUpdateTff7b72::Te6edf3classTb4b4b4, Te6edf3FirmwareRoutesTb4b4b4.Te6edf3FirmwareUpdateTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Settings
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3SettingsGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3SettingsGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3SettingsTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3SettingsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3DeviceConfigurationTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3DeviceConfigurationTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3ModuleConfigurationTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3ModuleConfigurationTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3AdministrationTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3AdministrationTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Settings - Config routes
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3UserTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3UserTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3ChannelConfigTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3ChannelConfigTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3DeviceTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3DeviceTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3PositionTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3PositionTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3PowerTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3PowerTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3NetworkTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3NetworkTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3DisplayTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3DisplayTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3LoRaTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3LoRaTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3BluetoothTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3BluetoothTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3SecurityTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3SecurityTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Settings - Module routes
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3MQTTTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3MQTTTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3SerialTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3SerialTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3ExtNotificationTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3ExtNotificationTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3StoreForwardTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3StoreForwardTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3RangeTestTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3RangeTestTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3TelemetryTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3TelemetryTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3CannedMessageTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3CannedMessageTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3AudioTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3AudioTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3RemoteHardwareTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3RemoteHardwareTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3NeighborInfoTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3NeighborInfoTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3AmbientLightingTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3AmbientLightingTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3DetectionSensorTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3DetectionSensorTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3PaxcounterTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3PaxcounterTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3StatusMessageTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3StatusMessageTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3TrafficManagementTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3TrafficManagementTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3TAKTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3TAKTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Settings - Advanced routes
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3CleanNodeDbTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3CleanNodeDbTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3DebugPanelTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3DebugPanelTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3AboutTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3AboutTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3SettingsRoutesTb4b4b4.Te6edf3FilterSettingsTff7b72::Te6edf3classTb4b4b4, Te6edf3SettingsRoutesTb4b4b4.Te6edf3FilterSettingsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Channels
Te6edf3subclassTb4b4b4(Te6edf3ChannelsRoutesTb4b4b4.Te6edf3ChannelsGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3ChannelsRoutesTb4b4b4.Te6edf3ChannelsGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3ChannelsRoutesTb4b4b4.Te6edf3ChannelsTff7b72::Te6edf3classTb4b4b4, Te6edf3ChannelsRoutesTb4b4b4.Te6edf3ChannelsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)

T8b949e// Connections
Te6edf3subclassTb4b4b4(Te6edf3ConnectionsRoutesTb4b4b4.Te6edf3ConnectionsGraphTff7b72::Te6edf3classTb4b4b4, Te6edf3ConnectionsRoutesTb4b4b4.Te6edf3ConnectionsGraphTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3subclassTb4b4b4(Te6edf3ConnectionsRoutesTb4b4b4.Te6edf3ConnectionsTff7b72::Te6edf3classTb4b4b4, Te6edf3ConnectionsRoutesTb4b4b4.Te6edf3ConnectionsTb4b4b4.Te6edf3serializerTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.4 - Generated in 0.09s